home *** CD-ROM | disk | FTP | other *** search
/ 25 Great Action Games 2 / Disk Image of sr0 (2022-06-01 1821).img / action2.mst < prev    next >
Text File  |  1994-08-16  |  10KB  |  376 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit Sample 2
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME      = 100
  12. CONST ASKQUIT      = 200
  13. CONST DESTPATH     = 300
  14. CONST EXITFAILURE  = 400
  15. CONST EXITQUIT     = 600
  16. CONST EXITSUCCESS  = 700
  17. CONST OPTIONS      = 800
  18. CONST APPHELP      = 900
  19. CONST MULTILIST    = 3900
  20. CONST TOOBIG       = 6300
  21. CONST BADPATH      = 6400
  22. CONST SELECT_GAMES = 7900
  23. CONST GLOBALSTAR    = 7901
  24.  
  25. ''Bitmap ID
  26. CONST LOGO         = 1
  27. CONST NumOfGames   = 25         ''change these values if you use less than 25 games
  28. CONST Group1       = 15         ''for first group of games
  29. CONST Group2       = 25         ''for second group
  30.  
  31. ''File Types
  32. CONST APPFILES     = 1
  33. CONST OPTFILES1    = 2
  34. CONST OPTFILES2    = 3
  35.  
  36. GLOBAL GAMES$ (NumOfGames)
  37. GLOBAL PATHS$ (NumOfGames)
  38. GLOBAL OPSYS$ (NumOfGames)
  39. GLOBAL DefPath$ (NumOfGames)
  40.  
  41. GLOBAL GROUP$
  42. GLOBAL GROUPA$
  43. GLOBAL DIR$
  44.  
  45. GLOBAL DEST$        ''Default destination directory.
  46. GLOBAL WINDRIVE$    ''Windows drive letter.
  47. GLOBAL OPT1OPT$     ''Option selection from OptFiles1 option dialog.
  48. GLOBAL OPT2OPT$     ''Option selection from OptFiles2 option dialog.
  49.  
  50. ''CustInst list symbol names
  51. GLOBAL APPNEEDS$    ''Option list costs per drive
  52. GLOBAL OPT1NEEDS$
  53. GLOBAL OPT2NEEDS$
  54. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  55. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  56.  
  57. ''Dialog list symbol names
  58. GLOBAL LISTITEMS$
  59. GLOBAL CHECKSTATES$
  60. GLOBAL STATUSTEXT$
  61. GLOBAL DRIVETEXT$
  62.  
  63.  
  64. DECLARE FUNCTION SetWindowLong LIB "User" (hWnd%, Oset%, sty&) AS LONG
  65. DECLARE FUNCTION ShowWindow LIB "User" (hWnd%, Show%) AS INTEGER
  66. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  67.  
  68.  
  69.  
  70. INIT:
  71.     hWnd% = HwndFrame()
  72.     SX& = SetWindowLong(hWnd%, -16, &H10000000+&H00800000+&H02000000)
  73.     SY& = ShowWindow(hWnd%, 3)
  74.     CUIDLL$ = "mscuistf.dll"            ''custom user interface dll
  75.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  76.  
  77.     ''SetBitmap CUIDLL$, LOGO
  78.     SetTitle "Global Star Software CD-ROM"
  79.  
  80.     GROUP$ = "ACTION2"                 ''name of directory and group
  81.     GROUPA$ = "25 Great Action Games Volume 2"                 ''name of second group
  82.     DIR$ = "GSTAR\" + GROUP$
  83.  
  84. '' note: these are the game titles with the first char C=CDROM, D=Hard Disk
  85. GAMES$ (1)= "Wolfenstein 3D Advanced"
  86. GAMES$ (2)= "Ancients Deathwatch"
  87. GAMES$ (3)= "Crystal Caves"
  88. GAMES$ (4)= "Commander Keen Dreams"
  89. GAMES$ (5)= "Overkill"
  90. GAMES$ (6)= "Secret Agent"
  91. GAMES$ (7)= "Solar Winds"
  92. GAMES$ (8)= "Wolfenstein Spear of Destiny"
  93. GAMES$ (9)= "Kiloblaster"
  94. GAMES$ (10)= "Dark Ages"
  95. GAMES$ (11)= "One Must Fall"
  96. GAMES$ (12)= "Space Chase"
  97. GAMES$ (13)= "Wolfenstein 3D"
  98. GAMES$ (14)= "Sinister Syndicate"
  99. GAMES$ (15)= "Commander Keen 6"
  100. GAMES$ (16)= "Xargon"
  101. GAMES$ (17)= "Electro Man"
  102. GAMES$ (18)= "Corridor 7"
  103. GAMES$ (19)= "Ninja Rabbit"
  104. GAMES$ (20)= "Prince of Persia"
  105. GAMES$ (21)= "Quadroid"
  106. GAMES$ (22)= "Starfire"
  107. GAMES$ (23)= "Executioner"
  108. GAMES$ (24)= "3D Catacomb Abyss"
  109. GAMES$ (25)= "3D Maze Wars"
  110.  
  111.  
  112. '' note: these are the subdirectory and exe file names
  113. PATHS$ (1)= "WOLFADV"
  114. PATHS$ (2)= "ANCIENTS"
  115. PATHS$ (3)= "CRYSTAL"
  116. PATHS$ (4)= "KDREAMS"
  117. PATHS$ (5)= "OVERKILL"
  118. PATHS$ (6)= "SAM1"
  119. PATHS$ (7)= "SOLAR"
  120. PATHS$ (8)= "SOD"
  121. PATHS$ (9)= "KFILE0"
  122. PATHS$ (10)= "DARK"
  123. PATHS$ (11)= "ONEFALL"
  124. PATHS$ (12)= "STORM1"
  125. PATHS$ (13)= "WOLF3D"
  126. PATHS$ (14)= "SYNDPLAY"
  127. PATHS$ (15)= "KEEN6"
  128. PATHS$ (16)= "XRFILE01"
  129. PATHS$ (17)= "EMFILE01"
  130. PATHS$ (18)= "CORR7"
  131. PATHS$ (19)= "NINRAB"
  132. PATHS$ (20)= "PRINCE"
  133. PATHS$ (21)= "QUADROID"
  134. PATHS$ (22)= "STARFIRE"
  135. PATHS$ (23)= "EXDEMO"
  136. PATHS$ (24)= "CATACOMB"
  137. PATHS$ (25)= "MAZEWARS"
  138.  
  139. OPSYS$ (1)= "DOS"
  140. OPSYS$ (2)= "DOS"
  141. OPSYS$ (3)= "DOS"
  142. OPSYS$ (4)= "DOS"
  143. OPSYS$ (5)= "DOS"
  144. OPSYS$ (6)= "DOS"
  145. OPSYS$ (7)= "DOS"
  146. OPSYS$ (8)= "DOS"
  147. OPSYS$ (9)= "DOS"
  148. OPSYS$ (10)= "DOS"
  149. OPSYS$ (11)= "DOS"
  150. OPSYS$ (12)= "DOS"
  151. OPSYS$ (13)= "DOS"
  152. OPSYS$ (14)= "DOS"
  153. OPSYS$ (15)= "DOS"
  154. OPSYS$ (16)= "DOS"
  155. OPSYS$ (17)= "DOS"
  156. OPSYS$ (18)= "DOS"
  157. OPSYS$ (19)= "DOS"
  158. OPSYS$ (20)= "DOS"
  159. OPSYS$ (21)= "DOS"
  160. OPSYS$ (22)= "DOS"
  161. OPSYS$ (23)= "DOS"
  162. OPSYS$ (24)= "DOS"
  163. OPSYS$ (25)= "DOS"
  164.  
  165.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  166.     IF szInf$ = "" THEN
  167.         szInf$ = GetSymbolValue("STF_CWDDIR") + GROUP$ + ".INF"
  168.     END IF
  169.     ReadInfFile szInf$
  170.  
  171.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  172.     DEST$ = WINDRIVE$ + ":\" + DIR$
  173.  
  174.     ''CustInst list symbols
  175.     LISTITEMSIN$ = "ListItemsIn"
  176.     LISTITEMSOUT$ = "ListItemsOut"
  177.  
  178.     FOR i% = 1 TO 25 STEP 1
  179.         AddListItem LISTITEMSIN$, GAMES$ (i%)
  180.     NEXT i%
  181.  
  182.     ''File Option Variables
  183.     OPT1OPT$ = "1"
  184.     OPT2OPT$ = "1"
  185.  
  186. '$IFDEF DEBUG
  187.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  188. '$ENDIF ''DEBUG
  189.  
  190. WELCOME:
  191.     Background(CUIDLL$)
  192.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  193.     IF sz$ = "CONTINUE" THEN
  194.      ''   UIPop 1
  195.     ELSE
  196.         GOSUB ASKQUIT
  197.         GOTO WELCOME
  198.     END IF
  199.  
  200.  
  201.  
  202. MULTILIST:
  203.     sz$ = UIStartDlg(CUIDLL$, SELECT_GAMES, "F25RadioDlgProc", APPHELP, HELPPROC$)
  204.     IF sz$ = "CONTINUE" THEN
  205.      ''   UIPop 1
  206.         GOTO GETPATH
  207.     ELSEIF sz$ = "BTN2" THEN
  208.         GOTO MULTILIST
  209.     ELSEIF sz$ = "BTN3" THEN
  210.         GOTO MULTILIST
  211.     ELSE
  212.         GOSUB ASKQUIT
  213.         GOTO MULTILIST
  214.     END IF
  215.  
  216.  
  217. GETPATH:
  218.     SetSymbolValue "EditTextIn", DEST$
  219.     SetSymbolValue "EditFocus", "END"
  220.  
  221.     j%=0
  222.     FOR i% = 1 TO 25 STEP 1
  223.         PomStr$ = GetListItem(LISTITEMSOUT$, i%)
  224.         IF PomStr$ = "DISK" THEN
  225.             j% = j% + 1
  226.         ENDIF
  227.     NEXT i%
  228.     IF j% = 0 THEN
  229.     ''    UIPop 1
  230.         GOTO INSTALL
  231.     ENDIF
  232.  
  233. GETPATHL1:
  234.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  235.  
  236.     IF sz$ = "CONTINUE" THEN
  237.         olddest$ = DEST$
  238.         DEST$ = GetSymbolValue("EditTextOut") ''+ "\" + DIR$
  239.  
  240.         ''Validate new path.
  241.         IF IsDirWritable(DEST$) = 0 THEN
  242.             GOSUB BADPATH
  243.             GOTO GETPATHL1
  244.         END IF
  245.         UIPop 1
  246.         olddest$ = ""
  247.     ELSEIF sz$ = "REACTIVATE" THEN
  248.         GOTO GETPATHL1
  249.     ELSEIF sz$ = "EXIT" THEN
  250.         GOSUB ASKQUIT
  251.         GOTO GETPATHL1
  252.     ELSE
  253.         UIPop 1
  254.     END IF
  255.  
  256.  
  257.  
  258. INSTALL:
  259.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  260.     ClearCopyList
  261.     FOR i% = 1 TO NumOfGames STEP 1
  262.         DefPath$ (i%) = SrcDir$ + PATHS$ (i%) + "\" + PATHS$ (i%) + ".EXE"
  263.     NEXT i%
  264.     ItmNum% = GetListLength(LISTITEMSOUT$)
  265.     if ItmNum% <> 0 THEN
  266.         CreateDir DEST$, cmoNone
  267.     ENDIF
  268.     FOR i% = 1 TO ItmNum% STEP 1
  269.         PomStr$ = GetListItem(LISTITEMSOUT$, i%)
  270.         IF PomStr$ = "DISK" THEN
  271.             PomStr$=GAMES$ (i%)
  272.            '' PomStr$=MID$( PomStr$, 2, LEN(PomStr$)-1)
  273.             AddSectionFilesToCopyList PomStr$ , SrcDir$ + PATHS$ (i%), DEST$ + "\" + PATHS$ (i%)
  274.             CreateDir DEST$ + "\" + PATHS$ (i%), cmoNone
  275.             DefPath$ (i%) = DEST$ + "\" + PATHS$ (i%) + "\" + PATHS$ (i%) + ".EXE"
  276.             PomStr$ = ""
  277.         ENDIF
  278.     NEXT i%
  279.  
  280.     WinFile$=GetWindowsDir+"Globstar.ico"
  281.     SrcFile$=SrcDir$+"Globstar.ico"
  282.     CopyFile SrcFile$, WinFile$, 0, 0
  283.     SrcDir$ = ""
  284.  
  285.     CopyFilesInCopyList
  286.  
  287.     CreateProgmanGroup GROUPA$, "", cmoNone
  288.     ShowProgmanGroup  GROUPA$, 1, cmoNone
  289.     FOR mm% = 1 TO NumOfGames STEP 1
  290.        PomStr$=GAMES$ (mm%)
  291.        ''PomStr$=MID$( PomStr$, 2, LEN(PomStr$)-1)
  292.        IF OPSYS$ (mm%) = "DOS" THEN
  293.           CreateProgmanItem GROUPA$, PomStr$, DefPath$ (mm%), "Globstar.ico", cmoOverwrite
  294.        ELSE
  295.           CreateProgmanItem GROUPA$, PomStr$, DefPath$ (mm%), "", cmoOverwrite
  296.        ENDIF
  297.     NEXT mm%
  298.  
  299. QUIT:
  300.     ON ERROR GOTO ERRQUIT
  301.  
  302.     IF ERR = 0 THEN
  303.         dlg% = EXITSUCCESS
  304.     ELSEIF ERR = STFQUIT THEN
  305.         dlg% = EXITQUIT
  306.     ELSE
  307.         dlg% = EXITFAILURE
  308.     END IF
  309. QUITL1:
  310.     UIPop 1
  311.     UIPop 1
  312.     Background(CUIDLL$)
  313.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  314.     IF sz$ = "REACTIVATE" THEN
  315.         GOTO QUITL1
  316.     END IF
  317.     UIPop 1
  318.  
  319.     END
  320.  
  321. ERRQUIT:
  322.     i% = DoMsgBox("Setup sources were corrupted, start over again!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  323.     END
  324.  
  325. TOOBIG:
  326.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  327.     IF sz$ = "REACTIVATE" THEN
  328.         GOTO TOOBIG
  329.     END IF
  330.     UIPop 1
  331.     RETURN
  332.  
  333. BADPATH:
  334.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  335.     IF sz$ = "REACTIVATE" THEN
  336.         GOTO BADPATH
  337.     END IF
  338.     UIPop 1
  339.     RETURN
  340.  
  341. ASKQUIT:
  342.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  343.  
  344.     IF sz$ = "EXIT" THEN
  345.         UIPopAll
  346.         ERROR STFQUIT
  347.     ELSEIF sz$ = "REACTIVATE" THEN
  348.         GOTO ASKQUIT
  349.     ELSE
  350.         UIPop 1
  351.     END IF
  352.     RETURN
  353.  
  354. '**
  355. '** Purpose:
  356. '**     Appends a file name to the end of a directory path,
  357. '**     inserting a backslash character as needed.
  358. '** Arguments:
  359. '**     szDir$  - full directory path (with optional ending "\")
  360. '**     szFile$ - filename to append to directory
  361. '** Returns:
  362. '**     Resulting fully qualified path name.
  363. '*************************************************************************
  364. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  365.     IF szDir$ = "" THEN
  366.         MakePath = szFile$
  367.     ELSEIF szFile$ = "" THEN
  368.         MakePath = szDir$
  369.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  370.         MakePath = szDir$ + szFile$
  371.     ELSE
  372.         MakePath = szDir$ + "\" + szFile$
  373.     END IF
  374. END FUNCTION
  375.  
  376.